export default {
  // 开启命名空间
  
  namespaced:true,
  //模块的state数据
  state:()=>({
        // 购物车的数组，用来存储购物车中每个商品的信息对象
        // 每个商品的信息对象，都包含如下 6 个属性：
        // { goods_id, goods_name, goods_price, goods_count, goods_small_logo, goods_state }
        cart: JSON.parse(uni.getStorageSync('cart') || '[]')
  }),
    // 模块的 mutations 方法
    mutations: {
      addToCart (state,goods) {
            // 根据提交的商品的Id，查询购物车中是否存在这件商品
              // 如果不存在，则 findResult 为 undefined；否则，为查找到的商品信息对象
            console.log(goods,6669)
              const findResult = state.cart.find((x) => x.goods_id === goods.goods_id)
              if(!findResult) {
                  // 如果购物车中没有这件商品，则直接 push
                state.cart.push(goods)
              }else{
                  //如果购物车中没有这件商品,则更新数量
                findResult.goods_count ++ 
              }
              // console.log(state.cart,2222222)
              //最后数据持久化 使用this.$commit 方法
                // console.log(state,goods,6667)
              this.commit('m_cart/saveToStorage')
              
         },
         // 将购物车中的数据持久化存储到本地
        saveToStorage(state){
          
          // console.log(state.cart,888)
          uni.setStorageSync('cart',JSON.stringify(state.cart))
        },
        //将购物车中商品状态持久化储存到本地updateGoodsState
         updateGoodsState(state,goods){
            // console.log(state,goods,22)
            const stafind = state.cart.find(x => x.goods_id === goods.goods_id )
            // console.log(stafind,101010)
            if( stafind) {
                stafind.goods_state = goods.goods_state
            }
            //最后数据持久化 使用this.$commit 方法
            this.commit('m_cart/saveToStorage')
         },
         //购物车中的数量持久化
         mChangenum(state,goods){
          const numfind =  state.cart.find(item => item.goods_id == goods.goods_id)
          if(numfind) {
            numfind.goods_count = goods.goods_count
          }
          //最后数据持久化 使用this.$commit 方法
          // console.log(state,777)
          this.commit('m_cart/saveToStorage')
         },
         //删除购物车中的一项
         removeSwipe(state,goods){
               state.cart =   state.cart.filter(item => item.goods_id !== goods.goods_id )
                // console.log(state,7776)
                //最后数据持久化 使用this.$commit 方法
                this.commit('m_cart/saveToStorage')
         },
         //更新购物车所有商品的勾选状态
         updataAll(state,newstate){
           state.cart.forEach(item=>item.goods_state = newstate )
            this.commit('m_cart/saveToStorage')
           
         }
    },
    // 模块的 getters 属性
    getters: {
      //所有商品总数量
      total(state){
        // console.log(state,61)
        let c = 0 
        state.cart.forEach( item=> {
          c+=  +item.goods_count
        })
           // console.log(c)
        return c
      },
      //计算已选中数量
      chechedCount(state){
         return state.cart.filter(item => item.goods_state).reduce((total,item) => total += item.goods_count,0)
      },
      //计算已勾选商品的总价格
      checkedGoodsAmount (state){
       return state.cart.filter(item=>item.goods_state).reduce( (total,item) => total += item.goods_count * item.goods_price, 0  ).toFixed(2)
        
      }
    },
}